Java本地内存LoadingCache介绍 | 您所在的位置:网站首页 › java 本地缓存 guava › Java本地内存LoadingCache介绍 |
一、本地缓存设计思路 如果让我们去设计一个本地缓存,需要考虑以下问题: 1、数据存储结构如何设计 本地缓存应该是要能高效的查找,因此数据的存储结构很关键; 最简单的设计就是一个大的HashMap,这样在多线程写的时候会有问题,当然也可以用并发场景下高性能的ConcurrencyHashMap;当然还可以自己设计底层的存储结构; 2、如何限制本地缓存的大小 为什么要限制,因为内存是宝贵的资源,作为容错处理必须有相应的参数设置本地缓存占用内存大小,具体来说是按内存大小,还是其它维度? 3、更新问题 实际场景缓存的内容是有过期时间的,即过一段时间需要更新,具体是通过过期时间的方式还是刷新机制 4、并发问题 当缓存快要过期了,如果这个时候多线程来取数据,是有一个线程能更新还是随机? 二、LoadingCache介绍 LoadingCache是大名鼎鼎的Google的Guava包的一个本地缓存接口(Guava是一个优秀的类库,具体就不在这里介绍了,有兴趣的同学可以自己百度下),定义如下: @GwtCompatible public interface LoadingCache extends Cache, Function { V get(K key) throws ExecutionException; V getUnchecked(K key); ImmutableMap getAll(Iterable |
CopyRight 2018-2019 实验室设备网 版权所有 |